package chai.ning.overload;

/**
 * 1、 如果一个类中有多个方法 【同名】 、【不同参】 则这些方法之间相互构成 【重载 ( overload )】
 * 2、【同名】同一个类中多个方法的名称完全相同
 * 3、【不同参】是指同名方法的参数中，参数的个数、类型、类型的顺序 只要有一个不相同就是参数不相同
 * 4、 为什么要有重载? 用起来方便
 * 5、 重载要求 同名不同参，是否对 方法的返回类型有要求?
 */
public class Tiger {
	
	public void add( int a , int b ) {
		System.out.println( "add(int,int)" );
		System.out.println( a + " + " + b + " = " + ( a + b ) );
	}
	
	public void add( int a , int b , int c ) {
		System.out.println( "add(int,int,int)" );
		System.out.println( a + " + " + b + " + " + c + " = " + ( a + b ) );
	}
	
	public void add( long a , int b ) {
		System.out.println( "add(long,int)" );
		System.out.println( a + " + " + b + " = " + ( a + b ) );
	}
	
	public void add( int b , long a ) {
		System.out.println( "add(int,long)" );
		System.out.println( a + " + " + b + " = " + ( a + b ) );
	}
	
	public void add( double a , double b ) {
		System.out.println( "add(double,double)" );
		System.out.println( a + " + " + b + " = " + ( a + b ) );
	}
	
	public static void main(String[] args) {
		
		Tiger t = new Tiger();
		
		t.add( 100 , 200 );
		
		t.add( 0L ,  0 ); // 根据传入的参数类型决定调用哪个方法
		
		t.add( 0 ,  0L );
		
	}

}
